summaryrefslogtreecommitdiffstats
path: root/provisioning-scripts.lua
blob: ed953dcd41d2a6174b8db69b5aa5c99486b4969d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
module (..., package.seeall)

-- if a table_creation_script does not create the named table or throw an exception then you will get an infinite loop, so be careful

-- List of each device that we manage
provisioning_devices = {
	"CREATE TABLE provisioning_devices (device_id SERIAL PRIMARY KEY, name VARCHAR(255) UNIQUE, label VARCHAR(255))",
	"CREATE INDEX devices_name_idx ON provisioning_devices (name)",
}

-- Multi-to-multi mapping of devices to classes
devices_to_classes = {
	"CREATE TABLE devices_to_classes (device_id INTEGER REFERENCES provisioning_devices, class_id INTEGER REFERENCES provisioning_classes)",
	"CREATE INDEX d2c_device_idx ON devices_to_classes (device_id)",
	"CREATE INDEX d2c_class_idx ON devices_to_classes (class_id)",
	-- Need to enforce that devices do not contain more than one class in the same class group (using triggers)
	-- Theoretically should also check on updates and updates of classes, but not going to bother
	"CREATE OR REPLACE FUNCTION check_class_groups() RETURNS TRIGGER AS $$ \
		BEGIN \
			PERFORM * from provisioning_classes join devices_to_classes using(class_id) where device_id=NEW.device_id and class_group_id=(select class_group_id from provisioning_classes where class_id=NEW.class_id); \
			IF FOUND THEN \
				RAISE EXCEPTION 'Device cannot have multiple classes within the same class group'; \
			END IF; \
			RETURN NEW; \
		END; \
	$$ LANGUAGE plpgsql",
	"CREATE TRIGGER check_class_trigger BEFORE INSERT ON devices_to_classes FOR EACH ROW EXECUTE PROCEDURE check_class_groups()",
}

-- List of different class groups
provisioning_class_groups = {
	"CREATE TABLE provisioning_class_groups (class_group_id SERIAL PRIMARY KEY, name VARCHAR(255) UNIQUE, label VARCHAR(255) UNIQUE, seq INTEGER)",
	"INSERT INTO provisioning_class_groups VALUES(default, 'device', 'Device Model', '1')",
	"INSERT INTO provisioning_class_groups VALUES(default, 'services', 'Services', '2')",
}

-- List of different device classes
provisioning_classes = {
	"CREATE TABLE provisioning_classes (class_id SERIAL PRIMARY KEY, class_group_id INTEGER REFERENCES provisioning_class_groups, label VARCHAR(255), seq INTEGER)",
	"CREATE INDEX classes_group_idx ON provisioning_classes (class_group_id)",
	"CREATE INDEX classes_label_idx ON provisioning_classes (label)",
	-- Need to enforce that group/label combo is unique
	"CREATE UNIQUE INDEX classes_group_label_idx ON provisioning_classes (class_group_id, label)",
	"INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Polycom SoundStation IP 6000 SIP', '1')",
	"INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Polycom SoundPoint IP 321 SIP', '2')",
	"INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Polycom SoundPoint IP 650 SIP', '3')",
	"INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Linksys Internet Phone Adapter PAP2T', '4')",
	"INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='services'), 'Standard Phone', '1')",
	"INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='services'), 'Standard Phone without Call Forwarding', '2')",
	"INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='services'), 'Hotline', '3')",
}

-- Multi-to-multi mapping of classes to parameter groups
classes_to_param_groups = {
	"CREATE TABLE classes_to_param_groups (class_id INTEGER REFERENCES provisioning_classes, group_id INTEGER REFERENCES provisioning_groups)",
	"CREATE INDEX c2g_class_idx ON classes_to_param_groups (class_id)",
	"CREATE INDEX c2g_group_idx ON classes_to_param_groups (group_id)",
	-- Need to enforce that classes do not contain more than one parameter group with same name (using triggers)
	-- Theoretically should also check on updates and updates of groups, but not going to bother
	"CREATE OR REPLACE FUNCTION check_group_names() RETURNS TRIGGER AS $$ \
	        BEGIN \
			PERFORM * from provisioning_groups join classes_to_param_groups using(group_id) where class_id=NEW.class_id and name=(select name from provisioning_groups where group_id=NEW.group_id); \
			IF FOUND THEN \
				RAISE EXCEPTION 'Classes cannot have multiple parameter groups with the same name'; \
			END IF; \
			RETURN NEW; \
		END; \
	$$ LANGUAGE plpgsql",
	"CREATE TRIGGER check_group_trigger BEFORE INSERT ON classes_to_param_groups FOR EACH ROW EXECUTE PROCEDURE check_group_names()",
	-- Devices
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundStation IP 6000 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 1'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundStation IP 6000 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Polycom Device'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 321 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 1'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 321 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 2'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 321 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Polycom Device'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 1'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 2'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 3'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 4'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 5'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 6'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 7'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 8'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 9'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 10'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 11'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 12'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 13'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 14'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 15'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 16'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 17'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 18'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 19'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 20'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 21'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 22'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 23'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 24'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 25'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 26'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 27'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 28'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 29'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 30'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 31'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 32'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 33'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 34'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Polycom SoundPoint IP 650 SIP'), (SELECT group_id FROM provisioning_groups WHERE label='Polycom Device'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Linksys Internet Phone Adapter PAP2T'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 1'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Linksys Internet Phone Adapter PAP2T'), (SELECT group_id FROM provisioning_groups WHERE label='Linksys Device'))",
	-- Services
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Standard Phone'), (SELECT group_id FROM provisioning_groups WHERE label='Standard Phone'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Standard Phone without Call Forwarding'), (SELECT group_id FROM provisioning_groups WHERE label='Standard Phone without Call Forwarding'))",
	"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Hotline'), (SELECT group_id FROM provisioning_groups WHERE label='Hotline'))",
}

-- List of different parameter groups
provisioning_groups = {
	"CREATE TABLE provisioning_groups (group_id SERIAL PRIMARY KEY, name VARCHAR(255), label VARCHAR(255) UNIQUE, seq INTEGER)",
	"CREATE INDEX groups_name_idx ON provisioning_groups (name)",
	"INSERT INTO provisioning_groups VALUES(default, 'device', 'Linksys Device', '1')",
	"INSERT INTO provisioning_groups VALUES(default, 'device', 'Polycom Device', '1')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg1', 'Registration 1', '10')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg2', 'Registration 2', '10')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg3', 'Registration 3', '10')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg4', 'Registration 4', '10')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg5', 'Registration 5', '10')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg6', 'Registration 6', '10')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg7', 'Registration 7', '10')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg8', 'Registration 8', '10')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg9', 'Registration 9', '10')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg10', 'Registration 10', '11')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg11', 'Registration 11', '11')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg12', 'Registration 12', '11')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg13', 'Registration 13', '11')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg14', 'Registration 14', '11')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg15', 'Registration 15', '11')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg16', 'Registration 16', '11')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg17', 'Registration 17', '11')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg18', 'Registration 18', '11')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg19', 'Registration 19', '11')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg20', 'Registration 20', '12')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg21', 'Registration 21', '12')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg22', 'Registration 22', '12')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg23', 'Registration 23', '12')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg24', 'Registration 24', '12')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg25', 'Registration 25', '12')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg26', 'Registration 26', '12')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg27', 'Registration 27', '12')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg28', 'Registration 28', '12')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg29', 'Registration 29', '12')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg30', 'Registration 30', '13')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg31', 'Registration 31', '13')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg32', 'Registration 32', '13')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg33', 'Registration 33', '13')",
	"INSERT INTO provisioning_groups VALUES(default, 'reg34', 'Registration 34', '13')",
	"INSERT INTO provisioning_groups VALUES(default, 'services', 'Standard Phone', '21')",
	"INSERT INTO provisioning_groups VALUES(default, 'services', 'Standard Phone without Call Forwarding', '22')",
	"INSERT INTO provisioning_groups VALUES(default, 'services', 'Hotline', '23')",
}

-- Multi-to-multi mapping of parameter groups to parameters
param_groups_to_params = {
	"CREATE TABLE param_groups_to_params (group_id INTEGER REFERENCES provisioning_groups, param_id INTEGER REFERENCES provisioning_params, value VARCHAR(255), editable BOOLEAN)",
	"CREATE INDEX g2p_group_idx ON param_groups_to_params (group_id)",
	"CREATE INDEX g2p_param_idx ON param_groups_to_params (param_id)",
	"CREATE INDEX g2p_editable_idx ON param_groups_to_params (editable)",
	"CREATE UNIQUE INDEX g2p_group_param_idx ON param_groups_to_params (group_id, param_id)",
	-- Device
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Linksys ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='template'), '/etc/provisioning/templates/linksysata-template.lua', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Polycom Device'), (SELECT param_id FROM provisioning_params WHERE name='template'), '/etc/provisioning/templates/polycom-template.lua', false)",
	-- Registrations
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 3'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 3'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 3'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 3'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 3'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 4'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 4'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 4'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 4'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 4'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 5'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 5'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 5'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 5'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 5'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 6'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 6'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 6'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 6'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 6'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 7'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 7'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 7'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 7'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 7'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 8'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 8'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 8'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 8'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 8'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 9'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 9'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 9'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 9'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 9'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 10'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 10'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 10'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 10'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 10'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 11'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 11'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 11'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 11'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 11'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 12'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 12'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 12'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 12'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 12'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 13'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 13'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 13'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 13'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 13'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 14'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 14'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 14'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 14'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 14'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 15'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 15'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 15'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 15'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 15'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 16'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 16'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 16'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 16'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 16'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 17'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 17'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 17'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 17'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 17'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 18'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 18'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 18'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 18'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 18'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 19'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 19'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 19'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 19'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 19'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 20'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 20'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 20'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 20'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 20'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 21'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 21'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 21'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 21'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 21'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 22'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 22'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 22'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 22'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 22'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 23'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 23'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 23'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 23'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 23'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 24'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 24'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 24'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 24'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 24'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 25'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 25'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 25'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 25'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 25'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 26'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 26'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 26'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 26'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 26'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 27'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 27'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 27'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 27'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 27'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 28'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 28'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 28'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 28'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 28'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 29'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 29'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 29'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 29'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 29'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 30'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 30'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 30'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 30'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 30'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 31'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 31'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 31'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 31'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 31'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 32'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 32'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 32'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 32'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 32'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 33'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 33'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 33'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 33'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 33'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 34'), (SELECT param_id FROM provisioning_params WHERE name='extension'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 34'), (SELECT param_id FROM provisioning_params WHERE name='password'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 34'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 34'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), '', true)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 34'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), '', true)",
	-- Services
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Standard Phone'), (SELECT param_id FROM provisioning_params WHERE name='forwarding'), 'true', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Standard Phone'), (SELECT param_id FROM provisioning_params WHERE name='hotlineenable'), 'false', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Standard Phone'), (SELECT param_id FROM provisioning_params WHERE name='hotlinedestination'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Standard Phone without Call Forwarding'), (SELECT param_id FROM provisioning_params WHERE name='forwarding'), 'false', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Standard Phone without Call Forwarding'), (SELECT param_id FROM provisioning_params WHERE name='hotlineenable'), 'false', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Standard Phone without Call Forwarding'), (SELECT param_id FROM provisioning_params WHERE name='hotlinedestination'), '', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Hotline'), (SELECT param_id FROM provisioning_params WHERE name='forwarding'), 'false', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Hotline'), (SELECT param_id FROM provisioning_params WHERE name='hotlineenable'), 'true', false)",
	"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Hotline'), (SELECT param_id FROM provisioning_params WHERE name='hotlinedestination'), '', true)",
}

-- List of each parameter used in any way for any device - mostly for how to display
provisioning_params = {
	"CREATE TABLE provisioning_params (param_id SERIAL PRIMARY KEY, name VARCHAR(255) UNIQUE, type VARCHAR(255), label VARCHAR(255), descr VARCHAR(255), value VARCHAR(255), seq INTEGER, regexp VARCHAR(255))",
	"CREATE INDEX params_name_idx ON provisioning_params (name)",
	"INSERT INTO provisioning_params VALUES(default, 'template', 'select', 'Template', '', '', '0', '')",
	"INSERT INTO provisioning_params VALUES(default, 'extension', 'text', 'Extension', '', '', '1', '^%d*$')",
	"INSERT INTO provisioning_params VALUES(default, 'password', 'text', 'Password', '', '', '2', '')",
	"INSERT INTO provisioning_params VALUES(default, 'forwardnoanswer', 'text', 'Forward on No-answer Destination', 'Callers will be transferred to this extension when you don''t answer after 20 seconds. Blank disables.', '', '3', '')",
	"INSERT INTO provisioning_params VALUES(default, 'forwardbusy', 'text', 'Forward on Busy Destination', 'Callers will be transferred to this extension when the line is busy. Blank disables.', '', '4', '')",
	"INSERT INTO provisioning_params VALUES(default, 'forwardall', 'text', 'Forward All Calls Destination', 'All calls will be transferred to this extension. Blank disables.', '', '5', '')",
	"INSERT INTO provisioning_params VALUES(default, 'forwarding', 'boolean', 'Forwarding Enable', '', 'true', '11', '')",
	"INSERT INTO provisioning_params VALUES(default, 'hotlineenable', 'boolean', 'Hotline Enable', '', 'false', '12', '')",
	"INSERT INTO provisioning_params VALUES(default, 'hotlinedestination', 'text', 'Hotline Destination', '', '', '13', '')",
}

-- All of the (non-default) parameter values for all devices are stored here
provisioning_values = {
	-- device_id is a device id from provisioning_devices and param_id is a param id from provisioning_params
	"CREATE TABLE provisioning_values (device_id INTEGER REFERENCES provisioning_devices, group_name VARCHAR(255), param_id INTEGER REFERENCES provisioning_params, value VARCHAR(255))",
	"CREATE INDEX values_device_idx ON provisioning_values (device_id)",
	"CREATE INDEX values_group_idx ON provisioning_values (group_name)",
	"CREATE INDEX values_param_idx ON provisioning_values (param_id)",
	"CREATE UNIQUE INDEX values_device_group_param_idx ON provisioning_values (device_id, group_name, param_id)",
	-- Need to enforce that group_name is a valid name in provisioning_groups (cannot use foreign key because name is not unique in provisioning_groups)
	-- Better yet, we'll check for a valid combination of device, group, and param (using triggers)
	-- Theoretically should also check on updates and updates of devices, groups, or parameters, but not going to bother
	"CREATE OR REPLACE FUNCTION check_valid_param() RETURNS TRIGGER AS $$ \
	        BEGIN \
			PERFORM * from devices_to_classes d join provisioning_classes using(class_id) join classes_to_param_groups using(class_id) join provisioning_groups g using(group_id) join param_groups_to_params p using(group_id) where d.device_id=NEW.device_id and g.name=NEW.group_name and p.param_id=NEW.param_id; \
			IF NOT FOUND THEN \
				RAISE EXCEPTION 'Invalid combination of device, group, and parameter'; \
			END IF; \
			RETURN NEW; \
		END; \
	$$ LANGUAGE plpgsql",
	"CREATE TRIGGER valid_param_trigger BEFORE INSERT ON provisioning_values FOR EACH ROW EXECUTE PROCEDURE check_valid_param()",
}

-- List of options for parameters
provisioning_options = {
	"CREATE TABLE provisioning_options (param_id INTEGER REFERENCES provisioning_params, label VARCHAR(255), value VARCHAR(255), seq INTEGER)",
	"CREATE INDEX options_param_idx ON provisioning_options (param_id)",
	"CREATE UNIQUE INDEX options_param_label_idx ON provisioning_options (param_id, label)",
	-- Templates
	"INSERT INTO provisioning_options VALUES((SELECT param_id FROM provisioning_params WHERE name='template'), 'Polycom', '/etc/provisioning/templates/polycom-template.lua', '1')",
	"INSERT INTO provisioning_options VALUES((SELECT param_id FROM provisioning_params WHERE name='template'), 'Linksys', '/etc/provisioning/templates/linksysata-template.lua', '2')",
}